const OSS = require('ali-oss');
const path = require('path')
const Router = require('koa-router')
const router = new Router()
const routers = router
const { createToken } = require('../../utils/methold')
const Address = require('../../db/controllers/address')

const config = require('../../utils/config')

const jwt = require('jsonwebtoken');
// const  secretKey = 'yrsx-m/f*2024'
// 服务端账号密码
const admin =  {
    name: 'maybe',
    password: 'maybe123',
}
const client = new OSS({
    // yourregion填写Bucket所在地域。以华东1（杭州）为例，Region填写为oss-cn-hangzhou。
    region: 'oss-cn-beijing',
    // 从环境变量中获取访问凭证。运行本代码示例之前，请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
    accessKeyId: config.oss.accessKey,
    accessKeySecret: config.oss.secret,
    bucket: 'yirishengxian',
    storageClass: 'Standard',
    acl: 'public-read',
    dataRedundancyType: 'LRS',
    secure: true,
});
const headers = {
    // 指定Object的存储类型。
    'x-oss-storage-class': 'Standard',
    // 指定Object的访问权限。
    'x-oss-object-acl': 'public-read',
    // 通过文件URL访问文件时，指定以附件形式下载文件，下载后的文件名称定义为example.txt。
    // 设置Object的标签，可同时设置多个标签。
    'x-oss-tagging': 'Tag1=1&Tag2=2',
    // 指定PutObject操作时是否覆盖同名目标Object。此处设置为true，表示禁止覆盖同名Object。
    'x-oss-forbid-overwrite': 'false',
    'x-oss-content-type': 'image/jpeg',
    'x-oss-content-disposition': 'inline',
};
routers.post('/login', async(req) => {
    const {
        username,
        password
    } = req.request.body
    // 服务
    if (username !== admin.name || password !== admin.password) {
        req.body = {
            status: 'error',
            msg: '用户名与密码不能为空'
        }
        return
    }
    const token = await createToken({username})
    req.body = {
        status: 200,
        msg: '登录成功',
        data: {
            token: token,
        }
    }
})
routers.post('/update/address',Address.add)
routers.get('/address',Address.getList)
routers.put('/address',Address.edit)
routers.delete('/address',Address.delete)
routers.post('/file/upload', async(ctx) => {
    // 服务
    const {
        files
    } = ctx.request.files
    const {
        fileName
    } = ctx.request.body
    if (files.mimetype){
        headers['x-oss-content-type'] = files.mimetype
    }
    // 上传到阿里云oss
    const result = await client.put(`${fileName}/` + files.originalFilename, path.normalize(files.filepath)
        ,{headers}
    );
    // 获取阿里云给的url【目前阿里云只有3个月】
    if(result && result.res.status == 200) {
        ctx.body = {
            status: 200,
            msg: '上传成功',
            data: result.url
        }
    } else {
        ctx.body = {
            status: 200,
            msg: '上传失败',
            data: result
        }
    }
})


module.exports = routers